export interface ThemeClassicProps {
  top: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    nav: {
      backgroundColor: string;
      textColor: string;
      activeBackgroundColor: string;
      activeTextColor: string;
    };
    user: {
      backgroundColor: string;
      backgroundImage: string;
    };
  };
  aside: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    menu: {
      main: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
      secondary: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
    };
  };
}
export interface ThemeVerticalProps {
  top: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    nav: {
      backgroundColor: string;
      textColor: string;
      activeBackgroundColor: string;
      activeTextColor: string;
    };
    user: {
      backgroundColor: string;
      backgroundImage: string;
    };
  };
  aside: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    menu: {
      main: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
      secondary: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
    };
  };
}
export interface ThemeTransverseProps {
  top: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    nav: {
      backgroundColor: string;
      textColor: string;
      activeBackgroundColor: string;
      activeTextColor: string;
    };
    user: {
      backgroundColor: string;
      backgroundImage: string;
    };
  };
  aside: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    menu: {
      main: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
      secondary: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
    };
  };
}
export interface ThemeColumnsProps {
  top: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    nav: {
      backgroundColor: string;
      textColor: string;
      activeBackgroundColor: string;
      activeTextColor: string;
    };
    user: {
      backgroundColor: string;
      backgroundImage: string;
    };
  };
  aside: {
    backgroundColor: string;
    backgroundImage: string;
    textColor: string;
    menu: {
      main: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
      secondary: {
        backgroundColor: string;
        textColor: string;
        activeBackgroundColor: string;
        activeTextColor: string;
      };
    };
  };
}

export interface ThemeProps {
  title: string;
  name: string;
  themeColor: string;
  classic: ThemeClassicProps;
  vertical: ThemeVerticalProps;
  transverse: ThemeTransverseProps;
  columns: ThemeColumnsProps;
}

/* themeConfigProp */
export interface ThemeConfigProps {
  layout: "vertical" | "classic" | "transverse" | "columns";
  primary: string;
  isDark: boolean;
  isGrey: boolean;
  isCollapse: boolean;
  isWeak: boolean;
  breadcrumb: boolean;
  breadcrumbIcon: boolean;
  tabs: boolean;
  tabsIcon: boolean;
  footer: boolean;
  maximize: boolean;
  size: "" | "default" | "small" | "large";
  theme?: ThemeProps;
}

/* ConfigState */
export interface ConfigState {
  show: boolean;
  language: string;
  themeConfig: ThemeConfigProps;
  theme: ThemeProps;
}

/* AuthState */
export interface AuthState {
  user: any;
  access_token: string;
  refresh_token: string;
  menus: any;
  perms: any;
  login: boolean;
}

/* tabsMenuProps */
export interface TabsMenuProps {
  icon: string;
  title: string;
  path: string;
  name: string;
  close: boolean;
  isKeepAlive: boolean;
}

/* TabsState */
export interface TabsState {
  tabsMenuList: TabsMenuProps[];
}
